# @Filename:    bitOperate
# @Author:      王佳伟
# @Time:        2025-04-03 11:20
# @Describe:    位操作
import numpy as np

# bitwise_and
# 通过np.bitwise_and()函数对输入数组中的整数的二进制表示的相应位执行位与运算。

print('13 和 17 的二进制形式：')
a, b = 13, 17
print(bin(a))
print(bin(b))
print('\n')

print('13 和 17 的位与：')
print(np.bitwise_and(13, 17))

print('==============================')

# bitwise_or
# 通过np.bitwise_or()函数对输入数组中的整数的二进制表示的相应位执行位或运算。
print('13 和 17 的二进制形式：')
a, b = 13, 17
print(bin(a))
print(bin(b))
print('\n')

print('13 和 17 的位或：')
print(np.bitwise_or(13, 17))

print('==============================')

# invert
# 此函数计算输入数组中整数的位非结果。 对于有符号整数，返回补码。
print('13 的位反转，其中ndarray的dtype是uint8：')
print(np.invert(np.array([13], dtype=np.uint8)))
print('\n')

# 比较 13 和 242 的二进制表示，我们发现了位的反转
print('13 的二进制表示：')
print(np.binary_repr(13, width=8))
print('\n')

print('242 的二进制表示：')
print(np.binary_repr(242, width=8))

# np.binary_repr()函数返回给定宽度中十进制数的二进制表示。

print('==============================')

# left_shift
# numpy.left shift()函数将数组元素的二进制表示中的位向左移动到指定位置，右侧附加相等数量的 0。

print('将 10 左移两位：')
print(np.left_shift(10, 2))
print('\n')

print('10 的二进制表示：')
print(np.binary_repr(10, width=8))
print('\n')

print('40 的二进制表示：')
print(np.binary_repr(40, width=8))
print('\n')

print('==============================')

# right_shift
# numpy.right_shift()函数将数组元素的二进制表示中的位向右移动到指定位置，左侧附加相等数量的 0。

print('将 40 左移两位：')
print(np.right_shift(40, 2))
print('\n')

print('4 的二进制表示：')
print(np.binary_repr(40, width=8))
print('\n')

print('10 的二进制表示：')
print(np.binary_repr(10, width=8))
print('\n')



